// electron/main.js
const { log } = require("console");
const { app, BrowserWindow, Menu, screen, session } = require("electron");
const path = require("path");

// 是否是生产环境
const isPackaged = app.isPackaged;

// 禁止显示默认菜单
Menu.setApplicationMenu(null);

// 主窗口
let mainWindow;

const createWindow = () => {
  // 创建浏览器窗口
  mainWindow = new BrowserWindow({
    // 默认窗口标题，如果由loadURL()加载的HTML文件中含有标签<title>，此属性将被忽略。
    title: "Electron + Vue3",
    width: 800,
    height: 600,
    // 设置窗口尺寸为屏幕工作区尺寸
    // width: screen.getPrimaryDisplay().workAreaSize.width,
    // height: screen.getPrimaryDisplay().workAreaSize.height,
    // 设置最小尺寸
    minWidth: 800,
    minHeight: 600,
    // 窗口图标。 在 Windows 上推荐使用 ICO 图标来获得最佳的视觉效果, 默认使用可执行文件的图标.
    // 在根目录中新建 build 文件夹存放图标等文件
    icon: path.resolve(__dirname, "../public/favicon.ico"),
  });

  // 开发环境下，打开开发者工具。
  if (!isPackaged) {
  mainWindow.webContents.openDevTools();
  }

  // 使用 loadURL 加载 http://localhost:3004 ，也就是我们刚才创建的 Vue 项目地址
  // 3004 改为你 Vue 项目的端口号
  // mainWindow.loadURL("http://localhost:5173/");
  mainWindow.loadURL(`file://${path.join(__dirname, "../dist/index.html")}`);
  // 如果使用了 nginx 代理，url 改为代理地址
  // mainWindow.loadURL("https://example.com/");

  // if (!isPackaged) {
  console.log(isPackaged);
  // 将 file://example.com/xxx 的 文件改为 https 协议
  // session.defaultSession.webRequest.onBeforeRequest((details, callback) => {
  //   // console.log(details);
  //   if (/^file:/.test(details.url) && /\api\//.test(details.url)) {
  //     let ipos = details.url.indexOf("/api")
  //     let str2=details.url.substring(ipos+4,details.url.length)
  //     console.log(str2);
  //     // let reurl = "http://10.20.4.43:10050"
  //     let reurl = "http://10.8.17.70:5555"
  //     // callback({ redirectURL: details.url.replace(/^file/, "http") });
  //     callback({ redirectURL: reurl+str2 });
  //   } else {
  //     callback(details);
  //   }
  // });
  session.defaultSession.webRequest.onBeforeRequest((details, callback) => {
    // console.log(details);
    console.log(2233);
    console.log(details.url);
    // if (/^file:/.test(details.url)) {
    // console.log(22331);
    // let ipos = ''
    // let str2 = ''
    // // console.log(str2);
    // // let reurl = "http://10.20.4.43:10050"
    // let reurl = ""
    if (/^file:/.test(details.url) && /\api\//.test(details.url)) {
      let ipos = details.url.indexOf("/api")
      let str2 = details.url.substring(ipos + 4, details.url.length)
      console.log(str2);
      let reurl = "http://10.10.12.61:5555"
      console.log(reurl + str2);
      callback({ redirectURL: reurl + str2 });
    }
    if (/^file:/.test(details.url) && /\loginn\//.test(details.url)) {
      let ipos = details.url.indexOf("/loginn")
      let str2 = details.url.substring(ipos + 7, details.url.length)
      console.log(str2);
      let reurl = "http://10.10.12.61:5550"
      // reurl = "http://10.20.4.43:39001"
      console.log(reurl + str2);
      callback({ redirectURL: reurl + str2 });
    }
    if (/^file:/.test(details.url) && /\file\//.test(details.url)) {
      let ipos = details.url.indexOf("/file")
      let str2 = details.url.substring(ipos + 5, details.url.length)
      console.log(str2);
      let reurl = "http://10.10.12.61:5557"
      console.log(reurl + str2);
      callback({ redirectURL: reurl + str2 });
    }
    if (/^file:/.test(details.url) && /\speak\//.test(details.url)) {
      let ipos = details.url.indexOf("/speak")
      let str2 = details.url.substring(ipos + 6, details.url.length)
      console.log(str2);
      let reurl = "http://10.10.12.61:5559"
      console.log(reurl + str2);
      callback({ redirectURL: reurl + str2 });
    } else {
    // callback({ redirectURL: details.url.replace(/^file/, "http") });
      callback(details);
    }
    // callback({ redirectURL: details.url.replace(/^file/, "http") });

    // } else {
    // }
  });
}
// };



const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
  app.quit();
} else {
  app.on("second-instance", () => {
    // 当运行第二个实例时,将会聚焦到 mainWindow 这个窗口
    if (mainWindow) {
      if (mainWindow.isMinimized()) mainWindow.restore();
      mainWindow.focus();
      // mainWindow.show();
    }
  });
  // 在应用准备就绪时调用函数
  app.whenReady().then(() => {
    createWindow();

    app.on("activate", () => {
      // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
      // 打开的窗口，那么程序会重新创建一个窗口。
      if (BrowserWindow.getAllWindows().length === 0) createWindow();
    });
  });
}


// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") app.quit();
});

// 如果开发环境使用了 nginx 代理，禁止证书报错
if (!isPackaged) {
  // 证书的链接验证失败时，触发该事件
  app.on(
    "certificate-error",
    function (event, webContents, url, error, certificate, callback) {
      event.preventDefault();
      callback(true);
    }
  );
}
